Apache VirtualHost mit Define-Variablen effektiv nutzen
Apache Define
-Variablen sind eine elegante Möglichkeit, wiederverwendbare Konfigurationen zu erstellen. Sie ermöglichen es, Werte bereits zur Konfigurations-Ladezeit zu setzen und innerhalb von VirtualHost
-Blöcken sowie in Include
-Dateien zu verwenden.
Vorteile der Nutzung von Define-Variablen
Define
-Werte werden frühzeitig ersetzt, bevor Apache die Konfigurationsdateien verarbeitet.- Include-Dateien erben automatisch die definierten Werte, wenn sie innerhalb eines
<VirtualHost>
-Blocks geladen werden. - Keine zusätzlichen Module wie
mod_macro
erforderlich. - Erhöhte Lesbarkeit und Wartbarkeit der Konfigurationsdateien.
Beispielkonfiguration
VirtualHost-Konfiguration (sites-available/www.example.com.conf
)
Define ServerName www.example.com
Define LogDirectory /var/log/apache2
Define ModSecMode DetectionOnly
<VirtualHost *:80>
ServerName ${ServerName}
Include conf-available/redirect_https.conf
</VirtualHost>
<VirtualHost *:443>
ServerName ${ServerName}
# SSL-Konfiguration
Include custom.d/ssl_example.com.conf
# ModSecurity-Konfiguration laden
Include custom.d/waf-config.conf
# Logging
ErrorLog ${LogDirectory}/${ServerName}_err.log
LogLevel warn
</VirtualHost>
ModSecurity Include-Datei (custom.d/waf-config.conf
)
# File: custom.d/waf-config.conf
# Created: 2025-03-05 15:20:15
# Description: ModSecurity configuration for each virtualhost
<IfModule security2_module>
SecRuleEngine ${ModSecMode}
SecAuditLog ${LogDirectory}/${ServerName}_modsec.log
SecWebAppId "${ServerName}"
# OWASP Core Rule Set in der richtigen Reihenfolge laden
IncludeOptional /etc/modsecurity/custom/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
IncludeOptional /etc/modsecurity/custom/vhostrules.d/${ServerName}_modsec.conf
IncludeOptional /etc/modsecurity/custom/global_rules.conf
IncludeOptional /etc/modsecurity/crs/rules/*.conf
IncludeOptional /etc/modsecurity/custom/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Funktionsweise
-
Define
-Werte setzen- Die
Define
-Werte werden außerhalb des<VirtualHost>
-Blocks definiert. - Diese Werte sind ab dem Zeitpunkt der Verarbeitung für Apache verfügbar.
- Die
-
Variablen in
VirtualHost
verwendenServerName ${ServerName}
setzt die Werte korrekt.Include
-Dateien können innerhalb desVirtualHost
-Blocks auf die Variablen zugreifen.
- Variablen in Include-Dateien nutzen
custom.d/waf-config.conf
kann auf die definierten Werte zugreifen.SecRuleEngine ${ModSecMode}
wird direkt durch den WertDetectionOnly
oderOn
ersetzt.- Das Logging nutzt den definierten
LogDirectory
-Pfad korrekt.
Fazit
Die Nutzung von Define
-Variablen in Apache-Konfigurationen bietet eine effiziente und ressourcenschonende Methode, um vHost-Konfigurationen modular und wiederverwendbar zu gestalten. Besonders in Kombination mit Include
-Dateien bleibt die Konfiguration übersichtlich, flexibel und einfach zu verwalten.